<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // var a,b;    把变量声明 提升到当前script的最前面 
    // function fn() {  //确定函数体
    //     console.log("函数调用11111111111");
    // }
    
    // JS中的代码从加载到执行经历了哪些流程?
    // 1. 语法解析 
    //    发生在代码执行之前 排查当前script中是否有语法错误 => 有错误就报错,代码不执行
    
    // 2. 预编译    =>   发生在代码执行之前,代码执行之前的准备工作
    // (1) 全局作用域 
    // a.  变量提升     把变量声明 提升到当前script的最前面   (注意:不通过关键词声明的变量 => 全局变量  没有变量提升)
    // b.  确定函数体   把命名函数函数  提升到当前script的最前面 

    // 3. 解释执行  代码从上向下依次执行
    
    debugger;
    console.log(a,b);
    console.log(fn);
    fn();
    
    var a = 10;   
    var b = 20;
    console.log("函数外的:", a,b); // 10 20

    function fn() {
       console.log("函数调用11111111111");
    }




</script>
<script>
    // console.log(1111);
</script>
</html>